
//Copyright 1997-2009 Syrinx Development, Inc.
//This file is part of the Syrinx Web Application Framework (SWAF).
// == BEGIN LICENSE ==
//
// Licensed under the terms of any of the following licenses at your
// choice:
//
//  - GNU General Public License Version 3 or later (the "GPL")
//    http://www.gnu.org/licenses/gpl.html
//
//  - GNU Lesser General Public License Version 3 or later (the "LGPL")
//    http://www.gnu.org/licenses/lgpl.html
//
//  - Mozilla Public License Version 1.1 or later (the "MPL")
//    http://www.mozilla.org/MPL/MPL-1.1.html
//
// == END LICENSE ==
using System;
using System.IO;

namespace Swaf.Crypto
{
    /// <summary>
    /// Summary description for ICryptoManager.
    /// </summary>
    public interface ICryptoManager : ICrypto
    {
        IKeyMaster KeyMaster { get;}
        string DefaultKey { get;set;}

        byte[] decrypt(string name, byte[] info);
        string decrypt(string name, string info);

        byte[] encrypt(string name, byte[] info);
        string encrypt(string name, string info);

        Stream createCryptoStream(string name, Stream source);

        bool encryptFile(FileInfo sourceFile, FileInfo destFile);
        bool encryptFile(string name, FileInfo sourceFile, FileInfo destFile);

        bool decryptFile(FileInfo sourceFile, FileInfo destFile);
        bool decryptFile(string name, FileInfo sourceFile, FileInfo destFile);

        bool EncryptMacroGeneratesDecryptMacro { get;set;}

        bool isValueEncrypted(string val);

#if !NET_1_1
        IX509XmlCrypto X509XmlCrypto { get; set;}
#endif
    }
}
